package com.education.common.utils;

import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;

import java.util.HashMap;
import java.util.Map;

//import org.junit.Test;

public class FileGetSizeUtil {

    /**
     *      * 获取文件大小
     *      * 
     *      * @param size
     *      * @return
     *     
     */
    public static String getPrintSize(long size) {
        // 如果字节数少于1024，则直接以B为单位，否则先除于1024，后3位因太少无意义
        if (size < 1024) {
            return String.valueOf(size) + "B";
        } else {
            size = size / 1024;
        }
        // 如果原字节数除于1024之后，少于1024，则可以直接以KB作为单位
        // 因为还没有到达要使用另一个单位的时候
        // 接下去以此类推
        if (size < 1024) {
            return String.valueOf(size) + "KB";
        } else {
            size = size / 1024;
        }
        if (size < 1024) {
            // 因为如果以MB为单位的话，要保留最后1位小数，
            // 因此，把此数乘以100之后再取余
            size = size * 100;
            return String.valueOf((size / 100)) + "." + String.valueOf((size % 100)) + "MB";
        } else {
            // 否则如果要以GB为单位的，先除于1024再作同样的处理
            size = size * 100 / 1024;
            return String.valueOf((size / 100)) + "." + String.valueOf((size % 100)) + "GB";
        }
    }


    /**
     * 通过接口查询七牛云中的数据
     * bucket	是	指定空间。
     * marker		上一次列举返回的位置标记，作为本次列举的起点信息。		默认值为空字符串。
     * limit		本次列举的条目数，范围为1-1000。		默认值为1000。
     * prefix		指定前缀，只有资源名匹配该前缀的资源会被列出。		默认值为空字符串。
     * delimiter		指定目录分隔符，列出所有公共前缀（模拟列出目录效果）。		默认值为空字符串。
     * String url = "/list?bucket=media&marker=<Marker>&limit=<Limit>&prefix=<UrlEncodedPrefix>&delimiter=<UrlEncodedDelimiter>";
     * String url = "https://rs.qiniu.com/list?bucket=media&limit=2";
     *
     * @param url
     * @return
     */
    public static String getQiNiuUrl(String url) {
        Map<String, String> header = new HashMap<String, String>();
        //header.put("Host", "rsf.qbox.me");
        header.put("Host", "www.qiniu.com/");
        header.put("Content-Type", "application/x-www-form-urlencoded");
        header.put("Accept-Encoding", "gzip");
        header.put("User-Agent", "Go-http-client/1.1");
        //
        Auth auth = Auth.create("TWDj6oF-ZkhXLmn8Iipc0woi6teoq-jerUpwuW3s", "S6FGTu-FfkSIoii0k9jUwRz2S5Xlac7VhVl_cELy");
        StringMap authorizationMap = auth.authorization(url, null, "application/x-www-form-urlencoded");
        String authorization = (String) authorizationMap.get("Authorization");
        header.put("Authorization", authorization);
        //http请求辅助类
        //String doGet = HttpTookit.doGet(url, null, header);
        String doGet = HttpTookit.doGet(url);
        return doGet;
    }

    /**
     * 获取七牛云上文件的大小
     */
    public static String getQiNiuUrl2(String url) {
        boolean isExist = QiniuUtil.estimateIsExist(url);
        if (isExist) {
            String url2 = "http://jinruanresource.shixuncloud.com/" + url;
            //http请求辅助类 获取到文件长度
            Long doGet = HttpTookit.doGet2(url2);
            if (null != doGet) {
                //计算大小并返回
                return getPrintSize(doGet);
            }
        }
        return "";
    }

    public static Long getQiNiuUrlSize(String url) {
        boolean isExist = QiniuUtil.estimateIsExist(url);
        if (isExist) {
            String url2 = "http://jinruanresource.shixuncloud.com/" + url;
            //http请求辅助类 获取到文件长度
            Long doGet = HttpTookit.doGet2(url2);
            return doGet;
        }
        return 0L;
    }

}


